package com.chengcang.api.modules.busi.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 *
 *  需求DTO
 * @author bibajin
 * @since 1.0.0 2023-01-10
 */
@Data
@ApiModel(value = "需求表DTO")
public class BusiDemandDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "序号")
    private Long id;

    @ApiModelProperty(value = "需求编号")
    private String demandNo;

    @ApiModelProperty(value = "甲方客户ID")
    private Long tenantId;

    @ApiModelProperty(value = "甲方客户名称")
    private String tenantName;

    @ApiModelProperty(value = "需求方ID")
    private Long demandId;

    @ApiModelProperty(value = "需求方名称")
    private String demandName;

    @ApiModelProperty(value = "租户外键")
    private String[] assignIds;

    @ApiModelProperty(value = "履约方外键")
    private String performanceId;

    @ApiModelProperty(value = "需求状态")
    private Integer demandStatus;

    @ApiModelProperty(value = "需求状态名字")
    private String demandStatusName;

    @ApiModelProperty(value = "支付状态")
    private Integer payStatus;

    @ApiModelProperty(value = "支付状态名字")
    private String payStatusName;

    @NotNull(message = "货品不能为空")
    @ApiModelProperty(value = "需求货品外键")
    private Long productId;

    @ApiModelProperty(value = "需求货品")
    private String productName;

    @NotNull(message = "需求数量为必填项")
    @ApiModelProperty(value = "需求数量")
    private BigDecimal demandTotal;

    @ApiModelProperty(value = "已供应数量")
    private BigDecimal alreadySupplyNum;

    @NotNull(message = "过期时间为必填项")
    @ApiModelProperty(value = "过期时间")
    private Date demandExpire;

    @NotNull(message = "发票类型不能为空（发票id）")
    @ApiModelProperty(value = "发票信息外键")
    private Long invoiceHeadId;

    @NotNull(message = "地址不能为空（地址id）")
    @ApiModelProperty(value = "地址信息外键")
    private Long addressId;

    @ApiModelProperty(value = "是否删除（0 有效 1 无效）")
    private Integer deleted;

    @ApiModelProperty(value = "创建者")
    private Long creator;

    @ApiModelProperty(value = "创建时间")
    private Date createDate;

    @ApiModelProperty(value = "更新者")
    private Long updater;

    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    @ApiModelProperty(value = "单位")
    private String productUnit;

    @NotNull(message = "单价为必填项")
    @ApiModelProperty(value = "单价")
    private BigDecimal price;

    @ApiModelProperty(value = "不含增值税金额")
    private BigDecimal noVatPrice;

    @ApiModelProperty(value = "增值税")
    private BigDecimal vat;

    @ApiModelProperty(value = "合同总价")
    private BigDecimal contractTotalPrice;

    @ApiModelProperty(value = "卖家收款金额")
    private BigDecimal sellerReceivePrice;

    @ApiModelProperty(value = "平台代收税费")
    private BigDecimal platformTakeTaxPrice;

    @ApiModelProperty(value = "最高履约数量")
    private BigDecimal maxPerformanceNum;

    @ApiModelProperty(value = "最低履约数量")
    private BigDecimal minPerformanceNum;

    @ApiModelProperty(value = "发票类型")
    private Long invoiceTypeId;

    @ApiModelProperty(value = "需求来源")
    private Integer dataSource;

    @ApiModelProperty(value = "需求来源名字")
    private String dataSourceName;

    @ApiModelProperty(value = "客户类型字典")
    private Integer tenantType;

    @ApiModelProperty(value = "客户类型名称")
    private String tenantTypeName;

    @ApiModelProperty(value = "履约客户名字")
    private String performanceName;

    @ApiModelProperty(value = "需求方")
    private String name;

    @ApiModelProperty(value = "需求来源类型")
    private Integer demandSourceType;

    @ApiModelProperty(value = "需求来源类型名字")
    private String demandSourceTypeName;

    /**
     * 指派类型 0 绑定企业  1 公共池
     */
    @ApiModelProperty(value = "需求来源")
    private Integer assignType;

    @ApiModelProperty(value = "需求来源名称")
    private String assignTypeName;
}
